//路由鉴权:鉴权,项目当中路由能不能被的权限的设置(某一个路由什么条件下可以访问、什么条件下不可以访问)
import router from '@/router'
import { useUserStore } from '@/stores/modules/user';

// npm install --save nprogress

import nprogress from 'nprogress'

//引入进度条样式
import 'nprogress/nprogress.css'
nprogress.configure({ showSpinner: false })
//获取账户相关的小仓库内部token数据,去判断账户是否登录成功


//全局守卫:项目当中任意路由切换都会触发的钩子
//全局前置守卫
router.beforeEach(async (to, from, next) => {
  // console.log('from =', from);
  // console.log('to =', to);

  // 访问路由组件的之前,进度条开始动
  nprogress.start()

  //动态设置网页左上角的标题
  document.title = `三叉戟商城-${to.meta.title}`
  
  const userStore = useUserStore()
  // console.log('userStore.profile?.token =', userStore.profile?.token);


  // 刷新token
  userStore.refreshToken(to.path)


  // ------------------ 已经登录了则不允许访问的页面包括【登录、注册、忘记密码页...】 ------------------
  const unRedirectUrls = [
    '/login',
    '/register',
    '/forgotPassword',
  ]
  if (userStore.profile?.token && unRedirectUrls.includes(to.path)) {
    next(from.fullPath)
    return
  }



  // ------------------------- 跳转的页面需要登录 -------------------------
  if (!userStore.profile?.token && to.meta.isLogin) {
    const redirectUrl = encodeURIComponent(to.fullPath)
    console.log('guard redirectUrl =', redirectUrl);
    next('/login?redirect='+redirectUrl)
    return
  }

  next()
})
//全局后置守卫
router.afterEach(() => {
  nprogress.done()
})